1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 import java.io.*;
36 import javax.management.*;
37 import javax.management.modelmbean.*;
38 import javax.management.openmbean.*;
39
40 public class NullInfoArraysTest {
41 public static void main(String[] args) throws Exception {
42 if (args.length > 0 && args[0].equals("write"))
43 writeSerializedForms();
44 else
45 testSerializedForms();
46 }
47
48 private static void testSerializedForms() throws Exception {
49 byte[][] serializedMBeanInfos =
50 SerializedMBeanInfo.serializedMBeanInfos;
51 for (int i = 0; i < serializedMBeanInfos.length; i++) {
52 byte[] serializedMBeanInfo = serializedMBeanInfos[i];
53 ByteArrayInputStream bis =
54 new ByteArrayInputStream(serializedMBeanInfo);
55 ObjectInputStream ois = new ObjectInputStream(bis);
56 MBeanInfo mbi = (MBeanInfo) ois.readObject();
57
58 System.out.println("Testing a " +
59 mbi.getClass().getName() + "...");
60
61 if (mbi.getAttributes() == null ||
62 mbi.getOperations() == null ||
63 mbi.getConstructors() == null ||
64 mbi.getNotifications() == null)
65 throw new Exception("At least one getter returned null");
66
67 System.out.println("OK");
68 }
69
70 System.out.println("Test passed");
71 }
72
73
74
75
76
77
78
79
80 private static void writeSerializedForms() throws Exception {
81 OutputStream fos = new FileOutputStream("SerializedMBeanInfo.java");
82 PrintWriter w = new PrintWriter(fos);
83 w.println("// Generated by NullInfoArraysTest - do not edit");
84 w.println();
85 w.println("public class SerializedMBeanInfo {");
86 w.println(" public static final byte[][] serializedMBeanInfos = {");
87 writeSerial(w, new MBeanInfo(null, null, null, null, null, null));
88 writeSerial(w, new ModelMBeanInfoSupport(null, null, null, null, null,
89 null, null));
90 writeSerial(w, new OpenMBeanInfoSupport(null, null, null, null, null,
91 null));
92 w.println(" };");
93 w.println("}");
94 w.close();
95 fos.close();
96 System.out.println("Wrote SerializedMBeanInfo.java");
97 }
98
99 private static void writeSerial(PrintWriter w, Object o) throws Exception {
100 ByteArrayOutputStream bos = new ByteArrayOutputStream();
101 ObjectOutputStream oos = new ObjectOutputStream(bos);
102 oos.writeObject(o);
103 oos.close();
104 byte[] bytes = bos.toByteArray();
105 w.print(" {");
106 for (int i = 0; i < bytes.length; i++) {
107 w.print(bytes[i]);
108 w.print(", ");
109 }
110 w.println("},");
111 }
112 }